/* Copyright 2008 Bas van den Berg
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef TESTCONNECTION_H
#define TESTCONNECTION_H

#include <string>

#include "Connection.h"

namespace Chronos {

class TestConnection : public Connection {
public:
	TestConnection(bool* destroyed_);
	virtual ~TestConnection();

    virtual int read (char* buf, unsigned int);
    virtual void write(const char* text) { written += text; }
    virtual void write(const char* text, int) { written += text; }
    virtual void setEcho(bool) {}

	void clear() { written = ""; }
    void checkWritten(const char* expected, const char* caller, int line);
    void checkWritten(const std::string& expected, const char* caller, int line) { checkWritten(expected.c_str(), caller, line); }

	void setOutput(const std::string& output_) { output = output_; }

	std::string written;
	bool* destroyed;
private:
	std::string output;
};

}

#define CONNECTION_CHECKWRITTEN(a) checkWritten(a, __FILE__, __LINE__)

#endif

